Github
PostsjsFunctional Programming

Functional Programming

A set of two-state buttons that can be toggled on or off

함수형 프로그래밍이란

좋은 프로그래밍은 사용성, 성능, 확장성, 기획 변셩에 대한 대응력이 높은것

이런 것들을 효율적이고 생산적으로 이루는 일이 성공적인 프로그래밍이다.

함수형 프로그래밍은 성공적인 프로그래밍을 위해 조합성을 강조하는 패러다임이다.

⇒ 순수 함수를 만든다. 모듈화 수준을 높인다.

⇒ 오류를 줄이고 안정성을 높인다. 생산성을 높인다.

순수함수:

동일한 인자를 주면 항상 동일한 결과가 나온다. 상위 스코프에서 영향을 받지 않는다.

사이드 이펙트가 없다. 다른 것에 영향을 미치지 않는다.

⇒ 외부의 데이터를 변경시키지 않고, 변형된 새로운 데이터를 다루어 나간다.

⇒ 평가시점이 중요하지 않는다.

⇒ 함수를 인자로 넘기거나, 서로 다른 공간에서 평가를 시켜도 같은 값을 내보내기 때문에 안전하다.

함수 내부에서 데이터가 어떻게 생겼는지에 대해서 알 수 없다.

⇒ 다용성이 높다. 관심사를 분리한다.

일급함수:

함수를 값으로 다룰 수 있다. 변수에 담겨서 인자로 전달되거나, 원할 때 실행시킬 수 있다.

1function addMaker(a){ 2 return function (a, b) { 3 return a + b 4 } // 클로저가 순수함수가 된다. 5} 6 7const add10 = addMaker(10) // add10이란 함수는 변하지 않기 때문에 순수함수가 된다. 8add10(20) // 30 9

함수가 순수 함수들을 인자로 받아 조합해나간다 ⇒ 함수형 프로그래밍

함수형 사고방식은 문제의 해결 방법을 동사(함수)들로 구성(조합)하는 것

객체지향은 데이터 기준, 함수형은 함수 기준 ⇒ 데이터의 형태를 함수에 맞춰야 한다.